package Client.GUI.Controls;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

/**
 * JImagePanel is een JPanel met een achtergrondplaatje
 */
public class JImagePanel extends JPanel
{
  private String imageURL = "";
  /**
   * Plaatje dat wordt getekend binnen dit panel.
   */
   private ImageIcon m_Image = null;

   /**
    * Default Constructor voor JImagePanel
    */
    public JImagePanel()
    {
    }
    
   /**
    * Maakt een JImagePanel aan d.m.v. een embedded-image.
    * @param img naam van het embedded-image
    */
    public JImagePanel(String img)
    {
        setImageByResource(img);
        imageURL = img;
    }

     /**
    * geef de afbeelding terug die als bron wordt gebruikt.
    */
    public String getImageUrl()
    {
        return imageURL;
    }

   /**
    * Maakt een JImagePanel aan d.m.v. een image-object.
    * @param img image-object
    */
    public JImagePanel(Image img)
    {
        setImage(img);
    }

   /**
    * Stelt het achtergrondplaatje in.
    * @param img nieuw achtergrondplaatje
    */
    public void setImage(Image img)
    {
        m_Image = new ImageIcon(img);
        
        // Autosize panel naar image-size.
        Dimension size = new Dimension(m_Image.getIconWidth(), m_Image.getIconHeight());
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);
        setLayout(null);
    }
    
   /**
    * Stelt het achtergrondplaatje in.
    * @param img nieuw achtergrondplaatje (embedded resource name)
    */
    public void setImageByResource(String img)
    {
        URL imgUrl = Image.class.getResource(img);
        Image _img = Toolkit.getDefaultToolkit().getImage(imgUrl); 
        m_Image = new ImageIcon(_img);

        // Autosize panel naar image-size.
        Dimension size = new Dimension(m_Image.getIconWidth(), m_Image.getIconHeight());
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);
        
        setLayout(null);
        invalidate();
    }
    
   /**
    * Geeft achtergrondplaatje terug.
    * @return huidig achtergrondplaatje
    */
    public Image getImage()
    {
        if (m_Image != null)
            return m_Image.getImage();
        return null;
    }


   /**
    * Tekent het plaatje in het paneel.
    * @param g graphics-object
    */
    @Override
    public void paintComponent(Graphics g)
    {
        m_Image.paintIcon(this, g, 0, 0);
        //g.drawImage(m_Image, 0, 0, null);
    }
}
